package com.yl.shiro;

import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.credential.SimpleCredentialsMatcher;

/**
 * 功能或描述：自定义凭证匹配器
 * package com.yl.shiro
 *
 * @author DR.YangLong
 *         date 14-10-28
 *         time 上午11:38
 *         email 410357434@163.com
 * @version 1.0
 * @since 1.0
 * module 修正:            日期：
 */
public class CustomCredentialsMatcher extends SimpleCredentialsMatcher {

    /**
     * 自定义凭证匹配，实现自己的凭证匹配规则
     * <code>info</code>为{@link com.yl.shiro.CustomRealm#doGetAuthenticationInfo(org.apache.shiro.authc.AuthenticationToken)}中的返回值
     *
     * @param token 用户输入的凭证
     * @param info  认证信息
     * @return 一样/不一样
     */
    @Override
    public boolean doCredentialsMatch(AuthenticationToken token, AuthenticationInfo info) {
        if (token != null && info != null) {
            /**
             * 获取token中的密码，此处是用户提交的
             */
            String submitPwd = new String((char[]) token.getCredentials());
            /**
             * 获取凭证中的密码，此处是数据库中查出的
             * 是{@link com.yl.shiro.CustomRealm#doGetAuthenticationInfo(org.apache.shiro.authc.AuthenticationToken)}
             * 方法的返回值
             */
            String storePwds = (String) info.getCredentials();
            if (submitPwd.equals(storePwds)) {
                return true;
            }
        }
        return false;
    }
}
